﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProyectoFinal.Vehiculos
{
    public partial class mantenimientoAutos : System.Web.UI.Page
    {
        ServiceAutos.webServiceAutoSoapClient objWsAutos = new ServiceAutos.webServiceAutoSoapClient();
        ServiceModelo.webServiceModeloSoapClient objWsModelos = new ServiceModelo.webServiceModeloSoapClient();
        ServiceEstiloAuto.WebServiceEstiloAutoSoapClient objWsEstiloAuto = new ServiceEstiloAuto.WebServiceEstiloAutoSoapClient();
        ServiceMarcas.WebServiceMarcasSoapClient objWsMarcas = new ServiceMarcas.WebServiceMarcasSoapClient();

        #region Eventos
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!Page.IsPostBack)
            {
                this.cargarListaAutos();
                this.cargarMarcas();
                this.cargarEstilos();
                txt_Fecha_Ingreso.Text = DateTime.Now.ToShortDateString();
            }
            
            
        }
        protected void linkTab_Click(object sender, EventArgs e)
        {
            this.cargarListaAutos();
        }
        protected void gvAutos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
            int fila = Convert.ToInt32(row.RowIndex);
            int codigoAuto = Convert.ToInt32(gvAutos.DataKeys[fila].Value);

            if (e.CommandName == "editar")
            {
               
               this.editarAutos(codigoAuto);
               pEdit.Visible = true;
            }
            else if (e.CommandName == "eliminar")
            {
              
                this.eliminarAutos(codigoAuto);
            }
        }
        protected void gvAutos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvAutos.PageIndex = e.NewPageIndex;
            this.cargarListaAutos();
        }
        protected void btn_guardar_Click(object sender, EventArgs e)
        {
            this.insertarAutos();
        }

        protected void btn_limpiar_Click(object sender, EventArgs e)
        {
            this.limpiarCamposInsert();
           
        }

        protected void btn_limpiar_edit_Click(object sender, EventArgs e)
        {
            txt_Vin_edit.Text = ""; 
            txt_Placa_edit.Text = "";
            txt_Fecha_Creacion_edit.Text = "";
            txt_Fecha_ingreso_edit.Text = "";
            
        }

        protected void btn_guardar_editar_Click(object sender, EventArgs e)
        {
            this.actualizarAutos();
        }

        protected void btn_limpiar_editar_Click(object sender, EventArgs e)
        {

        }

        protected void btn_Guardar_Borrar_Click(object sender, EventArgs e)
        {

        }

        protected void btn_Cancelar_Borrar_Click(object sender, EventArgs e)
        {

        }

        protected void btn_Cancelar_editar_Click(object sender, EventArgs e)
        {

        }

       
        protected void dd_Marca_SelectedIndexChanged1(object sender, EventArgs e)
        {

            int codigoModelo = Convert.ToInt32(dd_Marca.SelectedValue);
            this.cargarModelos(codigoModelo);
        }
        #endregion

        #region Procedimientos
        private void insertarAutos()
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                string vin = txt_VIN.Text;
                string placa = txt_Placa.Text;
                int codigoModelo = Convert.ToInt32(dd_Modelo.SelectedValue);
                int codigoMarca = Convert.ToInt32(dd_Marca.SelectedValue);
                int codigoEstilo = Convert.ToInt32(dd_Estilo.SelectedValue);
                int codigoEstado = Convert.ToInt32(1);
                DateTime fechacreacionV = Convert.ToDateTime(txt_Fecha_Creacion.Text,CultureInfo.InvariantCulture.DateTimeFormat);
                DateTime ingresoVehiculo = Convert.ToDateTime(txt_Fecha_Ingreso.Text, CultureInfo.InvariantCulture.DateTimeFormat);

                estado = objWsAutos.insertarAutos(vin, placa, codigoModelo, codigoMarca, codigoEstilo, codigoEstado, fechacreacionV,ingresoVehiculo);
                if (estado == "Placa Registrada")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado
                }
                else if (estado == "VIN Registrado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado
                }
                else if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Insertado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                    this.limpiarCamposInsert();
                   
                }


            }
            catch (Exception ex)
            {

            }
        }
        private void actualizarAutos()
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                int codigoCliente = 0;
                string vin = txt_Vin_edit.Text;
                string placa = txt_Placa_edit.Text;
                int codigoModelo = Convert.ToInt32(dd_model_edit.SelectedValue);
                int codigoMarca = Convert.ToInt32(dd_marca_edit.SelectedValue);
                int codigoEstilo = Convert.ToInt32(dd_estilo_edit);
                int codigoEstado = Convert.ToInt32(1);
                DateTime fechacreacionV = Convert.ToDateTime(txt_Fecha_Creacion_edit.Text, CultureInfo.InvariantCulture.DateTimeFormat);
                DateTime ingresoVehiculo = Convert.ToDateTime(txt_Fecha_ingreso_edit.Text, CultureInfo.InvariantCulture.DateTimeFormat);

                estado = objWsAutos.actualizarAutos(codigoCliente,vin, placa, codigoModelo, codigoMarca, codigoEstilo, codigoEstado, fechacreacionV, ingresoVehiculo);
                if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Modificado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                }


            }
            catch (Exception ex)
            {

            }
        }
        private void eliminarAutos(int codigoAuto)
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                estado = objWsAutos.eliminarAutos(codigoAuto);
                if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Eliminado")
                {
                    pEliminar.Visible = true;
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                }


            }
            catch (Exception ex)
            {

            }
        
        }
        private void editarAutos(int codigoAuto)
        {
            try
            {

                DataSet ds = objWsAutos.editarAutos(codigoAuto);
                //cargan los textbox,etc con el dataset voy a hacerlo con variables pero en lugar de estas irian textbox
                this.cargarMarcasEdit();
                txt_Vin_edit .Text= ds.Tables[0].Rows[0]["VIN"].ToString();
                txt_Placa_edit.Text = ds.Tables[0].Rows[0]["Placa"].ToString();
                dd_marca_edit.SelectedValue = ds.Tables[0].Rows[0]["Codigo_Marca"].ToString();
                this.cargarModelosEdit(Convert.ToInt32(ds.Tables[0].Rows[0]["Codigo_Marca"]));
                dd_model_edit.SelectedValue = ds.Tables[0].Rows[0]["Codigo_Modelo"].ToString();
                dd_estilo_edit.SelectedValue = ds.Tables[0].Rows[0]["Codigo_Estilo"].ToString();
                string textbox6 = ds.Tables[0].Rows[0]["Codigo_Estado"].ToString();
                txt_Fecha_Creacion_edit.Text = ds.Tables[0].Rows[0]["Creacion_Vehiculo"].ToString();
                txt_Fecha_ingreso_edit.Text = ds.Tables[0].Rows[0]["Ingreso_Vehiculo_Agencia"].ToString();


            }
            catch (Exception ex)
            {

            }
        }
        private void cargarListaAutos()
        {
                //devuelve lista completa para mostrar registros
                DataSet ds = objWsAutos.devolverAutos();
                gvAutos.DataSource = ds; 
                gvAutos.DataBind();

                // le pasan el dataset completo al grid/
                //ejemplo grid.datasource=ds; y grid.databind();


        }
        protected void cargarMarcas()
        {

            try
            {
                DataSet ds = objWsMarcas.devolverMarcas();

                dd_Marca.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Marca"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Marca"].ToString();


                    dd_Marca.Items.Add(item);
                    dd_Marca.DataBind();

                }

            }
            catch (Exception ex)
            {


            }
        }
        protected void cargarMarcasEdit()
        {

            try
            {
                DataSet ds = objWsMarcas.devolverMarcas();

                dd_marca_edit.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Marca"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Marca"].ToString();


                    dd_marca_edit.Items.Add(item);
                    dd_marca_edit.DataBind();

                }

            }
            catch (Exception ex)
            {


            }
        }
        protected void cargarModelosEdit(int codigoMarca)
        {

            try
            {
                DataSet ds = objWsModelos.devolverModelosbyMarca(codigoMarca);

                dd_model_edit.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Modelo"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Modelo"].ToString();


                    dd_model_edit.Items.Add(item);
                    dd_model_edit.DataBind();

                }

            }
            catch (Exception ex)
            {


            }
        }
        protected void cargarModelos(int codigoMarca)
        {

            try
            {
                DataSet ds = objWsModelos.devolverModelosbyMarca(codigoMarca);

                dd_Modelo.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    
                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Modelo"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Modelo"].ToString();


                    dd_Modelo.Items.Add(item);
                    dd_Modelo.DataBind();

                }

            }
            catch (Exception ex)
            {
               

            }
        }
        protected void cargarEstilos()
        {
            try
            {
                DataSet ds = objWsEstiloAuto.devolverEstilosAuto();

                dd_Estilo.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Estilo"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Estilo"].ToString();


                    dd_Estilo.Items.Add(item);
                    dd_Estilo.DataBind();

                }
            }
            catch (Exception)
            {
                
            }
        }
        public void limpiarCamposInsert()
        {
            txt_VIN.Text = ""; txt_Placa.Text = ""; txt_Fecha_Creacion.Text = ""; txt_Fecha_Ingreso.Text = "";
            dd_Marca.ClearSelection();
            dd_Estilo.ClearSelection();
            dd_Modelo.ClearSelection();
        }
        #endregion

        

      
       
    }
}